Linux系统目录结构

GO

1. FHS标准


根据FHS(Filesystem Hierarchy Standard )官方文件说明,其主要目的是希望让用户可以了解到已安装软件通常放在哪个目录下,所以其希望独立的开发商、操作系统制作者以及想要维护系统的用户,都能够遵循FHS标准。

FHS将目录定义为四种交互作用的形态:

  1. 可分享的:可以分享给其它系统挂载使用的目录,所以包括可执行文件与用户的邮件等数据。
  2. 不可分享的:自己机器上米娜运行的设备文件或者是与程序有关的socket文件等,由于仅与自身机器有关,所以就不适合分享给其它主机了。
  3. 不可变动的:有些数据是不会经常变动的,跟随着distribution而不变动。例如函数、说明文件、系统管理员所管理的主机服务配置文件等。
  4. 可变动的:经常改变的数据,例如登陆文件、新闻组等。

事实上,FHS针对目录树架构仅定义出三层目录下面应该放置什么数据而已。分别是下面这三个目录的定义:

  1. / (root,根目录):与开机系统有关。
    • FHS标准建议:根目录所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小,这样不但性能最好,其根目录所在文件系统也较不容易发生问题。
    • 根目录下面应该放置这些目录:
      • /bin
      • /boot
      • /dev
      • /etc
      • /home
      • /lib
      • /media
      • /mnt
      • /opt
      • /root
      • /sbin
      • /srv
      • /tmp
    • 特别注意,根目录与开机有关,开机过程中仅有根目录会被挂载,其它分区则是在开机完成之后才会持续进行挂载的行为。正因如此,根目录下与开机过程有关的目录就不能够与根目录放到不同的分区去。这些目录如下:
      • /etc :配置文件
      • /bin :重要的执行文件
      • /dev :所需要的设备文件
      • /lib :执行文件所需的函数库与内核所需的模块
      • /sbin :重要的系统执行文件
  2. /usr (Unix Software Resource):与软件安装和执行有关。
    • 这里面放置的数据属于可分享的与不可变动的。
    • FHS建议所有软件开发者应该将他们的数据合理地分别放置到这个目录下的子目录,而不是自行新建该软件自己独立的目录。
    • 该目录下面有如下所示的目录:
      • /usr/X11R6/
      • /usr/bin/
      • /usr/include/
      • /usr/lib/
      • /usr/local/
      • /usr/sbin/
      • /usr/share/
      • /usr/src/
  3. /var (VARiable):与系统运作过程有关。
    • 该目录只要针对常态性变动的文件,包括缓存(cache)、登陆文件(log file)以及某些软件运行时所产生的文件,包括程序文件(lock file,run file),或者例如MySQL数据库的文件等。
    • 常见的子目录如下:
      • /var/cache/
      • /var/lib/
      • /var/lock/
      • /var/log/
      • /var/mail/
      • /var/run/
      • /var/spool/

2. Linux系统目录说明


常见目录的作用整理如下表:

目录名 作用
/bin bin是Binary的缩写,该目录下存放的是最常用的命令
/boot 该目录下存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件
/dev dev是Device(设备)的缩写。该目录下存放的是Linux的外部设备。在Linux中,访问设备的方式和访问文件的方式是相同的
/etc 该目录下存放的是所有系统管理所需要的配置文件和子目录
/home 这是用户的家目录。在Linux中, 每个用户都有一个自己的目录,一般该目录名是以用户名来命名的(root用户有自己的家目录/root)
/lib和/lib64 这两个目录下存放的是系统最基本的动态链接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库。其中/lib64为64位的软件包的库文件所在目录
/media 系统会自动识别一些设备(如U盘、光驱等),当识别后,Linux会把识别的设备挂载到该目录下
/mnt 系统提供该目录是为了让用户临时挂载别的文件系统。我们可以将光驱挂载到/mnt/上,然后进入该目录查看光驱里的内容
/opt 这是给主机额外安装软件所设置的目录,该目录默认为空。比如,你要安装一个Oracle数据库,可以放到该目录下。
/proc 该目录是一个虚拟目录,是系统内存的映射,可以直接访问它来获取系统信息。该目录的内容在内存里,我们可以直接修改里面的某些文件。内存和CPU的详细信息都在该目录下(cpuinfo和meminfo),修改内核参数或调优时会在该目录下进行文件的参数修改,其中的数字目录文件表示进程ID,其中的文件表示状态等信息。比如,可以通过下面的命令来屏蔽主机的ping命令,使他人无法ping通你的机器。在日常工作中,你会经常用到类似的用法: echo 1 > /proc/sys/net/icmp_echo_ignore_all
/root 该目录是系统管理员的用户家目录
/run 这个目录其实和/var/run是同一个目录,它们属于链接文件的关系,这里面存放的是一些服务的PID。一个服务启动完后,是有一个PID文件的。
/sbin s就是Super User的意思,该目录存放的是系统管理员使用的系统管理程序
/srv 该目录存放的是一些服务启动之后需要提取的数据
/sys 该目录存放的是与硬件驱动程序相关的信息
/sys/class 包含所有注册在kernel里面的设备类型,链接到device
/sys/dev 维护一个按照字符设备和块设备的主次号码列表,链接到device
/sys/device 是全局设备结构体系,包含所有被发现的注册在各种总线上的各种物理设备,是内核层次表达模型,也是/sys文件系统管理设备的最重要的目录结构
/sys/fs 描述系统中所有的文件系统
/sys/kernel 存放的是内核中所有可调整的参数
/tmp 该目录用来存放一些临时文件
/usr 这是一个非常重要的目录,用户的很多应用程序和文件都存放在该目录下
/usr/bin 该目录存放的是系统用户使用的应用程序
/usr/sbin 该目录存放的是超级用户使用的比较高级的管理程序和系统守护进程
/usr/src 该目录是内核源代码默认的放置目录
/var 该目录存放的是不断扩充且经常修改的目录,包括各种日志文件或者PID文件,其中刚刚提到的/var/run就是在这个目录下面

OK

0%